<?php
/**
    Esta p�gina ser� utilizada para realizar as opera��es de cadastro, altera��o e remo��o que envolvem um processo.
    A diferencia��o destas opera��es ser� feita pelo par�metro operacao que ser� informado via GET.
     C�digo 1: Cadastro
     C�digo 2: Fundamento Legal
     Código 3: Revisao dos objetos do processo
     Código 4: Despacho
     Código 5: Mapa de Apuração

    Exibe ao fim o resultado das opera��es para o usu�rio.
*/

if(!isset($_SESSION))
{
   session_start();
}

if( !function_exists('__autoload') )
{
    function __autoload($class_name) {
    require_once $class_name . '.php';
    }
}

SAEO::ValidarAcesso( array( ) );

//function slug($string) {
//		$map = array(
//			'\xE1' => 'á',
//			'\xE9' => 'é',
//			'\xED' => 'í',
//		    '\xF3' => 'ó',
//		    '\xFA' => 'ú',
//			'\xE3' => 'ã',
//			'\xF5' => 'õ',
//			'\xE4' => 'ä',
//			'\xEB' => 'ë',
//			'\xEF' => 'ï',
//			'\xF6' => 'ö',
//			'\xFC' => 'ü',
//			'\xE0' => 'à',
//			'\xE8' => 'è',
//			'\xEC' => 'ì',
//			'\xF2' => 'ò',
//			'\xF9' => 'ù',
//			'\xE7' => 'ç',
//			'\xF1' => 'ñ',
//			'\xE2' => 'â',
//			'\xEA' => 'ê',
//			'\xEE' => 'î',
//			'\xF4' => 'ô',
//			'\xFB' => 'û',
//			'\u20A2' =>  '₢',
//				                  
//		);
//		$string = str_replace(array_keys($map), array_values($map), $string);
//		return $string;
//	}
	
	
	function slug($string) {
		$map = array(
			'\xE3\x80' => 'à',
			'\xE3\x81' => 'á',
			'\xE3\x82' => 'â',
			'\xE3\x83' => 'ã',
			'\xE3\x84' => 'ä',
			'\xE3\x85' => 'å',
			'\xE3\x86' => 'æ',
			'\xE3\x87' => 'ç',
			'\xE3\x90' => 'ð',
			'\xE3\x88' => 'è',
			'\xE3\x89' => 'é',
			'\xE3\x8A' => 'ê',
			'\xE3\x8B' => 'ë',
			'\xE3\x8C' => 'ì',
			'\xE3\x8D' => 'í',
			'\xE3\x8E' => 'î',
			'\xE3\x8F' => 'ï',
			'\xE3\x91' => 'ñ',
			'\xE3\x92' => 'ò',
			'\xE3\x93' => 'ó',
			'\xE3\x94' => 'ô',
			'\xE3\x95' => 'õ',
			'\xE3\x96' => 'ö',
			'\xE3\x98' => 'ø',
			'\xE3\x99' => 'ù',
			'\xE3\x9A' => 'ú',
			'\xE3\x9B' => 'û',
			'\xE3\x9C' => 'ü',
			'\xE3\x9D' => 'ý',
			'\xE3\x9F' => 'ÿ',
			'\xE0' => 'à',
			'\xE1' => 'á',
			'\xE2' => 'â',
			'\xE3' => 'ã',
			'\xE4' => 'ä',
			'\xE5' => 'å',
			'\xE6' => 'æ',
			'\xE7' => 'ç',
			'\xF0' => 'ð',
			'\xE8' => 'è',
			'\xE9' => 'é',
			'\xEA' => 'ê',
			'\xEB' => 'ë',
			'\xEC' => 'ì',
			'\xED' => 'í',
			'\xEE' => 'î',
			'\xEF' => 'ï',
			'\xF1' => 'ñ',
			'\xF2' => 'ò',
			'\xF3' => 'ó',
			'\xF4' => 'ô',
			'\xF5' => 'õ',
			'\xF6' => 'ö',
			'\xF8' => 'ø',
			'\xF9' => 'ù',
			'\xFA' => 'ú',
			'\xFB' => 'û',
			'\xFC' => 'ü',
			'\xFD' => 'ý',
			'\xFF' => 'ÿ',
			'\xC0' => 'À',
			'\xC1' => 'Á',
			'\xC2' => 'Â',
			'\xC3' => 'Ã',
			'\xC4' => 'Ä',
			'\xC5' => 'Å',
			'\xC6' => 'Æ',
			'\xC7' => 'Ç',
			'\xD0' => 'Ð',
			'\xC8' => 'È',
			'\xC9' => 'É',
			'\xCA' => 'Ê',
			'\xCB' => 'Ë',
			'\xCC' => 'Ì',
			'\xCD' => 'Í',
			'\xCE' => 'Î',
			'\xCF' => 'Ï',
			'\xD1' => 'Ñ',
			'\xD2' => 'Ò',
			'\xD3' => 'Ó',
			'\xD4' => 'Ô',
			'\xD5' => 'Õ',
			'\xD6' => 'Ö',
			'\xD8' => 'Ø',
			'\xD9' => 'Ù',
			'\xDA' => 'Ú',
			'\xDB' => 'Û',
			'\xDC' => 'Ü',
			'\xDD' => 'Ý'
				                  
		);
		$string = str_replace(array_keys($map), array_values($map), $string);
		return $string;
	}	

function transformarJSONParaArray(){
	$slug = slug($_POST['itens']);
	$processo = stripslashes($slug); // array serializado com os materiais do detalhamento
	//$processo = $_POST['itens'];
	//$str1 = $processo;
	$str1 = preg_replace("/([a-zA-Z0-9_]+?):/" , "\"$1\":", $processo); // fix variable names
	//$str2 = utf8_encode($str1);
	$str2 = $str1;
	//$str2 = $_POST['itens'];
	if( !strstr($_POST['tipo'], 'material' ) )
	{
		$j = json_decode($str2);
	}
	else
	{
		$str3 = str_replace('"{', '{', $str2  );
		$str4 = str_replace('}"', '}', $str3  );
		$j = json_decode($str4);
	}

	$itens = array();



	for($i = 0; $i < count($j); $i++ )
	{
		$itens[] = get_object_vars($j[$i]);
		if( !strstr($_POST['tipo'], 'servico' ) )
		{
			$medida = get_object_vars($itens[$i]['medida']);
			$itens[$i] = array_merge( $itens[$i], $medida );
		}
	}

	return $itens;

}

///////////////////////// COMEÇA AS OPERAÇÕES /////////////////////////

if( isset( $_GET['operacao'] ) )
{
    /**
    Realiza a inser��o de um registro na tabela t_compra com as informa��es vindas do formul�rio de processo.
    Ent�o, para cada material adicionado ao detalhamento � feita uma inser��o na tabela t_detalhamento.
    */
    if( $_GET['operacao'] == 1 )
    {


    	$valorReferencia 			= $_POST['valorReferencia'];
    	$objeto 					= $_POST['objeto'];
    	$justificativa 				= $_POST['justificativa'];
    	$licitacao	= new Licitacao();
    	$modalidadeLicitacao		= $licitacao->CarregarLicitacao($_POST['modalidadeLicitacao']);
    	$informacoesAdicionaisLicitacao = $_POST['informacoesAdicionaisLicitacao'];	  
    	$infoRecebimento 			= $_POST['infoRecebimento'];
    	$responsabilidadeIFAL 		= $_POST['responsabilidadeIFAL'];
    	$responsabilidadeContratado = $_POST['responsabilidadeContratado'];
    	$sancoes 					= $_POST['sancoes'];
    	$outrasInformacoes 			= $_POST['outrasInformacoes'];
    	$itens 						= transformarJSONParaArray();	
    	$concluido 					= $_POST['concluido'];
    	$tipo	 					= $_POST['tipo'];
    	
    	$servidor = new Servidor();
        $responsavel = $servidor->CarregarServidor( $_SESSION['servidorId'] );
    	
    	$processo = new Processo( NULL, NULL, $modalidadeLicitacao, $objeto, NULL, $justificativa, 
    								$infoRecebimento, $valorReferencia, $responsabilidadeIFAL, 
    								$responsabilidadeContratado, $sancoes, $outrasInformacoes, $responsavel, 
    								"", 0, NULL, NULL, NULL, $itens, $tipo, $concluido, $informacoesAdicionaisLicitacao );							   	


    	
    	try{
			$idProcesso = $processo->Salvar();
//			$materialCompraCampusDao = new MaterialCompraCampus();
//			$materialCompraCampusDao->SavarArrayTermoReferencia($itens, $idProcesso);
			$linkTermo = (($concluido ==1)?"<a href='http://saeo.ifal.edu.br/GeradorReport/GerarReport.jsp?reportName=TermoRef&opcao=codCompra&licitacao=$modalidadeLicitacao->modalidade&codCompra=$idProcesso'>Imprimir Termo de Refer&ecirc;ncia</a>":"");
			$titleHtml = "SAEO - Termo de Referência cadastrado com sucesso";
            $cabecalhoHtml = "TERMO DE REFERÊNCIA CADASTRADO COM SUCESSO";
           // $informacaoHtml = "Sucesso no cadastro do Termo de Referência. o numero do termo é";
           $informacaoHtml = "Sucesso no cadastro do Termo de Referência. o numero do termo é: $idProcesso<br>$linkTermo";           
		}catch(Exception $e)
		{
			$titleHtml = "SAEO - Problema no cadastro do Termo de Referência";
            $cabecalhoHtml = "FALHA NO CADASTRAMENTO DO TERMO DE REFERÊNCIA";
            $informacaoHtml = "Problema no cadastro do Termo de Referencia: ".$e->getMessage()."";
		}

    }
    
    else if( $_GET['operacao'] == 2 ) // inserir o fundamento legal do processo
    {
    	
    	$valorReferencia 			= $_POST['valorReferencia'];
    	$objeto 					= $_POST['objeto'];
    	$justificativa 				= $_POST['justificativa'];
    	$licitacao	= new Licitacao();
    	$modalidadeLicitacao		= $licitacao->CarregarLicitacao($_POST['modalidadeLicitacao']);
    	$informacoesAdicionaisLicitacao = $_POST['informacoesAdicionaisLicitacao'];	 
    	$infoRecebimento 			= $_POST['infoRecebimento'];
    	$responsabilidadeIFAL 		= $_POST['responsabilidadeIFAL'];
    	$responsabilidadeContratado = $_POST['responsabilidadeContratado'];
    	$sancoes 					= $_POST['sancoes'];
    	$outrasInformacoes 			= $_POST['outrasInformacoes'];
    	$itens 						= transformarJSONParaArray();	
    	$concluido 					= $_POST['concluido'];
    	$tipo	 					= $_POST['tipo'];
    	$idProcesso					= $_POST['idProcesso'];
    							  	
    	
    	$servidor = new Servidor();
        $responsavel = $servidor->CarregarServidor( $_SESSION['servidorId'] );
    	
    	$processo = new Processo( $idProcesso, NULL, $modalidadeLicitacao, $objeto, NULL, $justificativa, 
    								$infoRecebimento, $valorReferencia, $responsabilidadeIFAL, 
    								$responsabilidadeContratado, $sancoes, $outrasInformacoes, $responsavel, 
    								"", 0, NULL, NULL, NULL, $itens, $tipo, $concluido, $informacoesAdicionaisLicitacao );	
    	
    	try{
			$resultado = $processo->Atualizar();
			
			$titleHtml = "SAEO - Termo de Referência cadastrado com sucesso";
            $cabecalhoHtml = "TERMO DE REFERÊNCIA CADASTRADO COM SUCESSO";
            $informacaoHtml = "Sucesso no cadastro do Termo de Referência. o numero do termo é: $processo->id<br>
            <a href='http://saeo.ifal.edu.br/GeradorReport/GerarReport.jsp?reportName=TermoRef&opcao=codCompra&licitacao=$modalidadeLicitacao->modalidade&codCompra=$idProcesso'>Imprimir Termo de Refer&ecirc;ncia</a>";
            
		}catch(Exception $e)
		{
			$titleHtml = "SAEO - Problema no cadastro do Termo de Referência";
            $cabecalhoHtml = "FALHA NO CADASTRAMENTO DO TERMO DE REFERÊNCIA";
            $informacaoHtml = "Problema no cadastro do Termo de Referencia: ".$e->getMessage()."";
		}							
    								
//		PARTE FEITA ANTERIORMENTE    	
//    	$servidorTemp = new Servidor();
//		$servidor = $servidorTemp->CarregarServidor( $_SESSION['servidorId'] );
//
//		if( $_GET['juncao'] == 0 )
//		{
//			$processoTemp = new Processo();
//			$processo = $processoTemp->CarregarProcesso( $_GET['processoId'] );
//			$processo->AvaliarEstrategiaContratacao( $_POST['modalidadeLicitacao'], $_POST['fundamentoLegal'], $_POST['justificativaLegal'] );
//			$resultado = $processo->Atualizar();
//		}
//		else if( $_GET['juncao'] == 1 )
//		{
//			$processoTemp = new ProcessosJuntados();
//			$processo = $processoTemp->CarregarProcessoJuntado( $_GET['processoId'], $servidor );
//			for( $i = 0; $i < count( $processo->processos );$i++ )
//			{
//				$processo->processos[$i]->AvaliarEstrategiaContratacao( $_POST['modalidadeLicitacao'], $_POST['fundamentoLegal'], $_POST['justificativaLegal'] );
//				$resultado = $processo->processos[$i]->Atualizar();
//			}
//		}
//		
//		$tituloTabela = "Fundamento Legal";
		
    }
    
    else if( $_GET['operacao'] == 3 ) // revisao dos objetos do processo
    {
    	$d = stripslashes($_POST['detalhamento']); // array serializado com os materiais do detalhamento
		$output = json_decode($d);
				
		if( $_GET['juncao'] == 0 )
		{
			$objetosDetalhamentos = stripslashes($_POST['detalhamento']); // array serializado com os materiais do detalhamento
			$str = preg_replace("/([a-zA-Z0-9_]+?):/" , "\"$1\":", $objetosDetalhamentos); // fix variable names
			$str = utf8_encode($str);
			$j = json_decode($str);

			$itens = array();
			
			for($i = 0; $i < count($j); $i++ )
			{
				$itens[] = get_object_vars( $j[$i] );
			}
			
			print_r($itens);

			
			$processo = new Processo();
			$processoSelecionado = $processo->CarregarProcesso( $_GET['processoId'] );
					
				
			if( $processoSelecionado->tipoProcesso == 'material' )
			{
				$m = new Material();
				
				for($i = 0; $i < count($itens); $i++ )
				{
					$material = $m->CarregarMaterialPorId( (int)$itens[$i]['objetoId'] );
					
					$material->codigo = $itens[$i]['codigo'];
					$r = $material->Atualizar();
				}
			}	else
			{
				$s = new Servico();
				for($i = 0; $i < count($itens); $i++ )
				{
					$servico = $s->CarregarServicoPorId( (int)$itens[$i]['objetoId'] );
					
					$servico->codigo = $itens[$i]['codigo'];
					$r = $servico->Atualizar();
																												
				}				
												
			}			
			if( $r )
			{
				if ( $processoSelecionado->status < 31 )
					$processoSelecionado->status = 31;
			}
				
			$resultado = $processoSelecionado->Atualizar();
		}
		else if( $_GET['juncao'] == 1 )
		{
			$s = new Servidor();
			$servidor = $s->CarregarServidor( $_SESSION['servidorId'] );
			$p = new ProcessosJuntados();
			$processo = $p->CarregarProcessoJuntado( $_GET['processoId'], $servidor );
			$d = stripslashes($_POST['detalhamento']); // array serializado com os materiais do detalhamento
			$output = json_decode($d);
			for($i = 0; $i< count($output); $i++)
			{
				if( $output[$i][0] == 'servico' )
				{
					$s = new Servico();
					$o = $s->Carregar( $output[$i][1] );
					$o->codigo = $output[$i][2];
					if( $output[$i][3] )
						$o->codigoAberto = 1;
					else
						$o->codigoAberto = 0;
					$o->nome = $output[$i][4];
				}
				else if( $output[$i][0] == 'material' )
				{
					$m = new Material();
					$o = $m->Carregar( $output[$i][1] );
					$o->codigo = $output[$i][2];
					if( $output[$i][3] )
						$o->codigoAberto = 1;
					else
						$o->codigoAberto = 0;
					$o->nome = $output[$i][4];
					$o->valor = $output[$i][5];
				}
				$o->Atualizar();
			}
			for( $i = 0; $i < count( $processo->processos ); $i++ )
			{
				$processo->processos[$i] = $processo->processos[$i]->CalcularValorTotal();
				var_dump($processo->processos[$i]);
				exit;
				$processo->processos[$i]->Atualizar();
			}
			
		}
		

        $tituloTabela = "Revisar Objetos";
    }
    
	else if( $_GET['operacao'] == 4 ) // despacho
    {
    	if( isset( $_GET['processoId'] ) )
    	{
    		if( isset( $_GET['juncao'] ) )
    		{
    			if( $_GET['juncao'] == 0 ) 
    			{
    				$p = new Processo();
    				$s = new Servidor();
    				$servidor = $s->Carregarservidor( $_SESSION['servidorId'] );
    				$processo = $p->CarregarProcesso( $_GET['processoId'] );
    				$resultado = $processo->RealizarDespacho( $servidor, $_POST['avaliacao'], $_POST['despacho'] );
    			}
    			else if( $_GET['juncao'] == 1 )
    			{
    				$p = new ProcessosJuntados();
    				$s = new Servidor();
    				$servidor = $s->Carregarservidor( $_SESSION['servidorId'] );
    				$processo = $p->CarregarProcessoJuntado( $_GET['processoId'], $servidor );
    				for( $i = 0; $i < count($processo->processos); $i++ )
    				{
    					$r = $processo->processos[$i]->RealizarDespacho( $servidor, $_POST['avaliacao'], $_POST['despacho'] );
    					if( !$r )
    					{
    						$resultado = FALSE;
    						break;
    					}
    				}
    				$resultado = TRUE;
    			}
    		}
    	}
		
			$tituloTabela = "Despacho";
			   
    }
    
    else if( $_GET['operacao'] == 5 ) // Mapa de apura��o feito
    {
    	if( $_GET['juncao'] == 0 )
    	{
    		$p = new Processo();
    		$processo = $p->CarregarProcesso( $_GET['processoId'] );
    		if ( $processo->status < 33 )
    			$processo->status = 33;
    			
    		$resultado = $processo->Atualizar();
    	}
    	else if( $_GET['juncao'] == 1 )
    	{
    		$p = new ProcessosJuntados();
    		$s = new SLeervidor();
    		$servidor = $s->Carregarservidor( $_SESSION['servidorId'] );
    		$processo = $p->CarregarProcessoJuntado( $_GET['processoId'], $servidor );
	    	foreach( $processo->processos as $p  )
			{
				if ( $processo->status < 33 )
					$p->status = 33;
				$resultado = $p->Atualizar();
			}
    	}
    	
    	$tituloTabela = "Mapa de Apuração";
    	
    }
}

if ( $_GET['operacao'] == 1 ||  $_GET['operacao'] == 2)
{
	echo "<html>
	           <head>
	           <title>".$titleHtml."</title>
	           <link rel='stylesheet' type='text/css' href='templates/estilos.css'>
	           </head>
	     <body class='body'>
	     <table width='779' border='0' cellspacing='0' cellpadding='0' align='center' bgcolor='#FFFFFF'>
	            <tr>
	                <td>";
	                include "Topo.php";
	                echo"</td>
	            </tr>
	            <tr>
	                <td><div class='titulosTabelas' style='width:779; height:20; background:url(templates/tabela.jpg)'>".$cabecalhoHtml."</div></td>
	            </tr>
	            <tr>
	                <td colspan='2'>&nbsp;</td>
	            </tr>
	            <tr>
	                <td><table class='tabela' width='495' border='0' cellspacing='0' cellpadding='0' align='center' bgcolor='#FFFFFF'>
	                           <tr>
	                               <td>&nbsp;</td>
	                           </tr>
	                           <tr>
	                               <td class='textoTabelas' align='center'>".$informacaoHtml."</td>
	                           </tr>
	                           <tr>
	                               <td>&nbsp;</td>
	                           </tr>
	                     </table>
	                </td>
	            </tr>
	            <tr>
	                <td>&nbsp;</td>
	            </tr>
	            <tfoot>
	           <tr>
	                <td colspan='2'>&nbsp;</td>
	            </tr>
	                   <tr>";
	                       include 'rodapeCreditos.php';
	            echo"
	            </tr>
	            </tfoot>
	     </table>
	     </form>
	     </body>
	     </html>";
}else{
	echo"<table class='tabela' width='650' border='0' cellspacing='0' cellpadding='0' align='center' bgcolor='#FFFFFF'>
				<tbody>
					<tr>
	    				<td><div class='passosTitulosTabelas' style='width:650; height:20;'>$tituloTabela</div></td>
					</tr>
	    			<tr>
	    				<td>&nbsp;</td>
	    			</tr>
	    			<tr>";
	        		if ($resultado == true) 
	            		echo "<td class='textoTabelas'><div style='width: 300px; margin: 0 auto;'>Os dados foram salvos com sucesso!</div></td>";
	            	else
	            		echo "<td class='textoTabelas'><div style='width: 550px; margin: 0 auto;'>Falha no envio dos dados: ".mysql_error()."</div><br><div style='width: 250px; margin: 0 auto;'>Por favor tente mais tarde!</div>";
					echo"
					</tr>
				<tfoot>
					<tr>
	    				<td>&nbsp;</td>
					</tr>
				</tfoot>
			</table>";
}
?>
